home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / comm / tcp / wu_ftpd_37_21.lha / wu-ftpd / src / authenticate.c < prev    next >
C/C++ Source or Header  |  1994-04-01  |  3KB  |  76 lines

  1. /* Copyright (c) 1993, 1994  Washington University in Saint Louis
  2.  * All rights reserved.
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions are
  6.  * met: 1. Redistributions of source code must retain the above copyright
  7.  * notice, this list of conditions and the following disclaimer. 2.
  8.  * Redistributions in binary form must reproduce the above copyright notice,
  9.  * this list of conditions and the following disclaimer in the documentation
  10.  * and/or other materials provided with the distribution. 3. All advertising
  11.  * materials mentioning features or use of this software must display the
  12.  * following acknowledgement: This product includes software developed by the
  13.  * Washington University in Saint Louis and its contributors. 4. Neither the
  14.  * name of the University nor the names of its contributors may be used to
  15.  * endorse or promote products derived from this software without specific
  16.  * prior written permission.
  17.  *
  18.  * THIS SOFTWARE IS PROVIDED BY WASHINGTON UNIVERSITY AND CONTRIBUTORS
  19.  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  20.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  21.  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASHINGTON
  22.  * UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  23.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  24.  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  25.  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  26.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  27.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  28.  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  29.  * POSSIBILITY OF SUCH DAMAGE.
  30.  */
  31.  
  32. #include "config.h"
  33.  
  34. #include "stdio.h"
  35. #include "string.h"
  36. #include "authuser.h"
  37. #include "authenticate.h"
  38.  
  39. #define AUTHNAMESIZE 100
  40.  
  41. char authuser[AUTHNAMESIZE];
  42. int authenticated;
  43.  
  44. authenticate()
  45. {
  46. #if USE_A_RFC931
  47.     unsigned long in;
  48.     unsigned short local, remote;
  49. #endif /* USE_A_RFC931 */
  50.     char *user;
  51.  
  52.     /* Ideally more authentication schemes would be called from here, with
  53.      * the strongest called first.  One possible double-check would be to
  54.      * verify that the results of all authentication calls (returning
  55.      * identical data!) are checked against each other. */
  56.  
  57.     authenticated = 0;          /* this is a bitmask, one bit per method */
  58.  
  59.     user = "*";
  60.  
  61. #if USE_A_RFC931
  62.     if (auth_fd(0, &in, &local, &remote) == -1)
  63.         user = "?";             /* getpeername/getsockname failure */
  64.     else {
  65.         if (!(user = auth_tcpuser(in, local, remote))) {
  66.             user = "*";         /* remote host doesn't support RFC 931 */
  67.         } else {
  68.             authenticated |= A_RFC931;
  69.         }
  70.     }
  71. #endif /* USE_A_RFC931 */
  72.  
  73.     strncpy(authuser, user, sizeof(authuser));
  74.     authuser[AUTHNAMESIZE - 1] = '\0';
  75. }
  76.